clear; clc; close all;
% 绘制 MNFM1 映射对参数 b 的分岔图
%
%   a = 0.02, c = 1.1, d = 0.001
%   b 从 2.35 扫描到 2.65

% 参数设置
a = 0.02;
c = 1.1;
d = 0.001;
func = @f2;

% 扫描 b 的范围与步进
bStart = 2.35;
bEnd   = 2.65;
bStep  = 0.001;

% 迭代设置
N = 5000;        % 每个 b 值迭代总步数，可适当加大
discard = 1000;  % 丢弃前 discard 步以排除暂态影响

% 初始条件
x0 = 1.0;
y0 = 2.0;

% 生成 b 值序列
bVals = bStart : bStep : bEnd;

figure('Color','w'); 
hold on;         % 在同一张图中累积绘制
box on;

for b = bVals
    % 分配空间
    x = zeros(N,1);
    y = zeros(N,1);
    % 设置初值
    x(1) = x0;
    y(1) = y0;
    
    % 迭代
    for k = 1 : N-1
    [x(k+1), y(k+1)] = func(x(k), y(k), a, b, c, d);
    end
    
    % 丢弃暂态
    xplot = x(discard+1 : end);
    
    % 在分岔图中，横轴为 b, 纵轴为 x
    % 对于丢弃后剩余的每个 x, 画一个点 (b, x)
    plot(b * ones(size(xplot)), xplot, '.', 'MarkerSize', 1, 'Color','k');
end

xlabel('$b$', 'Interpreter','latex','FontSize',14);
ylabel('$x$', 'Interpreter','latex','FontSize',14);
title('Bifurcation Diagram of MNFM1 w.r.t. b','Interpreter','latex','FontSize',16);
set(gca, 'FontName','Times New Roman', 'FontSize',12);
axis tight;

% exportgraphics(gcf, 'mnfm1_bifurcation.png', 'Resolution',300);